package com.ruoyi.pcj.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruoyi.pcj.domain.PcjLtFriendList;
import com.ruoyi.pcj.domain.PcjLtFriendSetting;
import com.ruoyi.pcj.dto.friend.FriendListDto;
import com.ruoyi.pcj.dto.friend.FriendSessionDto;

/**
 * 聊天-好友列信息设置Service接口
 *
 * @author ms
 * @date 2024-03-28
 */
public interface IPcjLtFriendSettingService {
    /**
     * 查询聊天-好友列信息设置
     *
     * @param id 聊天-好友列信息设置主键
     * @return 聊天-好友列信息设置
     */
    PcjLtFriendSetting selectPcjLtFriendSettingById(String id);

    /**
     * 分页查询聊天-好友列信息设置列表
     *
     * @param params 最基本参数{"pageNum":1,"pageSize":10}，其他参数自行定义
     * @return 聊天-好友列信息设置集合
     */
    IPage<PcjLtFriendSetting> selectPcjLtFriendSettingList(Map<String, Object> params);

    /**
     * 新增聊天-好友列信息设置
     *
     * @param pcjLtFriendSetting 聊天-好友列信息设置
     * @return 结果
     */
    Boolean insertPcjLtFriendSetting(PcjLtFriendSetting pcjLtFriendSetting);

    /**
     * 修改聊天-好友列信息设置
     *
     * @param pcjLtFriendSetting 聊天-好友列信息设置
     * @return 结果
     */
    Boolean updatePcjLtFriendSetting(PcjLtFriendSetting pcjLtFriendSetting);

    /**
     * 批量删除聊天-好友列信息设置
     *
     * @param ids 需要删除的聊天-好友列信息设置主键集合
     * @return 结果
     */
    Boolean deletePcjLtFriendSettingByIds(String[] ids);


    /**
     * 对外提供的设置默认字段值，id为空新增，不为空更新
     **/
    void setEntityDefValAuto(PcjLtFriendSetting pcjLtFriendSetting);

    /**
     * 获取指定用户+朋友对应的好友信息
     *
     * @param userId
     * @param friendId
     * @return
     */
    List<PcjLtFriendSetting> getFriendSettingData(Long userId, Long friendId);

    /**
     * 初始化好友设置
     *
     * @param userId
     * @param friendId
     * @return
     */
    PcjLtFriendSetting initFriendSettingMsg(Long userId, Long friendId);

    /**
     * 获取好友列表
     **/
    List<FriendListDto> getFriendList();

    /**
     * 获取聊天会话
     * **/
    List<FriendSessionDto> getChatSession();

}
